package com.beiben.system.user.mapper;

import com.beiben.system.user.domain.BeiBenDeptUser;
import com.beiben.system.user.domain.BeiBenUser;
import com.beiben.system.user.domain.ExamUser;
import com.beiben.system.user.domain.TreeSelectVo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.SysPost;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by admin on 2020/8/25.
 */
public interface BeiBenUserMapper {

    /**
     * 根据条件分页查询用户列表
     *
     * @param user 用户信息
     * @return 用户信息集合信息
     */
    public List<BeiBenUser> selectBeiBenUserList(BeiBenUser user);

    /**
     * 通过用户ID查询用户
     *
     * @param userId 用户ID
     * @return 用户对象信息
     */
    public BeiBenUser selectUserById(Long userId);

    /**
     * 通过部门id 获取部门及子部门下所有部门的人员信息
     *
     * @param deptId 部门id
     * @return 部门列表
     */
    List<BeiBenDeptUser> selectDeptById(@Param("deptId") Long deptId);


    /**
     * 通过部门id 获取部门及子部门下所有部门的人员信息
     *
     * @param deptId 部门id
     * @return 部门列表
     */
    List<BeiBenUser> selectDeptByDeptId(@Param("deptId") Long deptId);
    /**
     * 获取人员列表：按部门id 获取 部门下所有部门人员
     *
     * @param deptIds 部门id list
     * @return
     */
    List<ExamUser> selectUserByDeptIds(List<Long> deptIds);

    /**
     * 部门员工信息
     * @param deptId
     * @return
     */
    public List<BeiBenUser> getDeptUserInfo(Long deptId) ;

    /**
     * 新增用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    public int insertBeiBenUser(BeiBenUser user);

    /**
     * 修改用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    public int updateBeiBenUser(BeiBenUser user);

    /**
     * 员工组织机构数
     * @param deptId
     * @return
     */
    public List<TreeSelectVo> selectUserTreeData(@Param("deptId") Long deptId) ;

    /**
     * 员工组织机构数
     * @param deptId
     * @return
     */
    public List<TreeSelectVo> selectDeptTreeData(@Param("deptId") Long deptId) ;

    /**
     * 通过用户ID查询用户
     *
     * @param userName 用户名称
     * @return 用户对象信息
     */
    public BeiBenUser selectUserByUserName(String userName);

    /**
     * 部门员工所属岗位信息
     * @param userId
     * @return
     */
    public List<SysPost> selectUserPostByUserId(@Param("userId") Long userId) ;

}
